package com.cx.thread.test;

import java.util.LinkedList;
import java.util.Random;

public class Producter {
    private String name; // 生产者标识
    private LinkedList<String> buffer;// 消息集合
    public Producter(String name,LinkedList<String> buffer){
        this.name = name;
        this.buffer = buffer;
    }

    /**
     * 发送数据
     */
    public void send(){
        while (true){
            // 生成数据，此处可以使用键盘输入
            Random random = new Random();
            String messages = "消息" + random.nextInt();
            /*
             * 一个队列最多只能缓存10条数据，
             * 如果缓存的大小大于10，线程阻塞，否则，唤醒所有线程。
             */
            synchronized (buffer) {
                try{
                    if(buffer.size() > 10){
                        System.out.println(name + "线程阻塞");
                        buffer.wait();
                    }else if(messages != null) {
                        buffer.add(messages);// 发布消息
                        System.out.println(name + "发布：" + messages);
                        buffer.notifyAll();
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}